#ifndef TUPLA_CPP
#define TUPLA_CPP

#include "Tupla.h"

template<class T1, class T2, class T3, class T4>
Tupla<T1, T2, T3, T4>::Tupla(const T1& dato1)
: m_Dato1(dato1)
{
}

template<class T1, class T2, class T3, class T4>
Tupla<T1, T2, T3, T4>::Tupla(const T1& dato1, const T2& dato2)
: m_Dato1(dato1), m_Dato2(dato2)
{
}

template<class T1, class T2, class T3, class T4>
Tupla<T1, T2, T3, T4>::Tupla(const T1& dato1, const T2& dato2, const T3& dato3)
: m_Dato1(dato1), m_Dato2(dato2), m_Dato3(dato3)
{
}

template<class T1, class T2, class T3, class T4>
Tupla<T1, T2, T3, T4>::Tupla(const T1& dato1, const T2& dato2, const T3& dato3, const T4& dato4)
: m_Dato1(dato1), m_Dato2(dato2), m_Dato3(dato3), m_Dato4(dato4)
{
}

template<class T1, class T2, class T3, class T4>
Tupla<T1, T2, T3, T4>::Tupla(const Tupla<T1, T2, T3, T4>& tupla)
: m_Dato1(tupla.m_Dato1), m_Dato2(tupla.m_Dato2), m_Dato3(tupla.m_Dato3), m_Dato4(tupla.m_Dato4)
{
}

template<class T1, class T2, class T3, class T4>
Tupla<T1, T2, T3, T4>::~Tupla()
{
}

template<class T1, class T2, class T3, class T4>
const Tupla<T1, T2, T3, T4>& Tupla<T1, T2, T3, T4>::operator=(const Tupla<T1, T2, T3, T4>& tupla)
{
	m_Dato1 = tupla.m_Dato1;
	m_Dato2 = tupla.m_Dato2;
	m_Dato3 = tupla.m_Dato3;
	m_Dato4 = tupla.m_Dato4;
	return *this;
}

template<class T1, class T2, class T3, class T4>
T1& Tupla<T1, T2, T3, T4>::GetDato1()
{
	return m_Dato1;
}

template<class T1, class T2, class T3, class T4>
T2& Tupla<T1, T2, T3, T4>::GetDato2()
{
	return m_Dato2;
}

template<class T1, class T2, class T3, class T4>
T3& Tupla<T1, T2, T3, T4>::GetDato3()
{
	return m_Dato3;
}

template<class T1, class T2, class T3, class T4>
T4& Tupla<T1, T2, T3, T4>::GetDato4()
{
	return m_Dato4;
}

#endif